package exec;

import java.util.Comparator;
import java.util.PriorityQueue;

/**
 * 给你一个链表数组，每个链表都已经按升序排列。
 *
 * 请你将所有链表合并到一个升序链表中，返回合并后的链表。
 * @Author wangj
 * @Date 2021/12/8 23:30
 */
public class LeetCode23 {

    public ListNode mergeKLists(ListNode[] lists) {
        if(lists.length == 0){
            return null;
        }
        PriorityQueue<ListNode> queue = new PriorityQueue<>(lists.length, Comparator.comparingInt(a -> a.val));
        for (ListNode head : lists){
            if(head != null){
                queue.add(head);
            }
        }
        ListNode head = new ListNode(-1);
        ListNode temp = head;
        while (!queue.isEmpty()){
            ListNode node = queue.poll();
            temp.next = node;
            if(node.next != null){
                queue.add(node.next);
            }
            temp = temp.next;
        }
        return head.next;
    }
}
